package com.qing.expert.modules.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qing.expert.modules.user.entity.User;
import com.qing.expert.modules.user.vo.request.BalanceRequest;
import com.qing.expert.modules.user.vo.request.UserUpdateRequest;
import com.qing.expert.modules.user.vo.response.BalanceRecordVO;
import com.qing.expert.modules.user.vo.response.FavoriteGoodsVO;

/**
 * 用户服务接口
 */
public interface UserService extends IService<User> {
    /**
     * 微信登录
     *
     * @param code 微信登录code
     * @return 登录结果
     */
    User wxLogin(String code, String nickName, String avatarUrl);

    /**
     * 用户登出
     *
     * @param userId 用户ID
     */
    void logout(String userId);

    /**
     * 更新用户信息
     *
     * @param userId  用户ID
     * @param request 用户更新请求
     */
    void updateUserInfo(String userId, UserUpdateRequest request);

    /**
     * 余额充值
     *
     * @param userId  用户ID
     * @param request 余额充值请求
     */
    void recharge(String userId, BalanceRequest request);

    /**
     * 余额提现申请
     *
     * @param userId  用户ID
     * @param request 余额提现请求
     */
    void withdraw(String userId, BalanceRequest request);

    /**
     * 获取收藏列表
     */
    Page<FavoriteGoodsVO> getFavorites(String userId, Integer page, Integer size);

    /**
     * 添加收藏
     *
     * @param userId  用户ID
     * @param goodsId 商品ID
     */
    void addFavorite(String userId, String goodsId);

    /**
     * 移除收藏
     *
     * @param userId  用户ID
     * @param goodsId 商品ID
     */
    void removeFavorite(String userId, String goodsId);

    /**
     * 获取余额变动记录
     */
    Page<BalanceRecordVO> getBalanceRecords(String userId, Integer page, Integer size);
}